/**
 * \file
 *          teleStarterThread.h
 * \brief
 *          Implements starter thread of entTelematicsMain
 *
 * \par Author (last changes):
 *          - Song Yang
 *          - Phone +65 65800179
 *          - Continental Automotive Singapore
 * \par Project Leader:
 *          - Mandy Sin
 *          - Phone +65 67799 819
 *          - Mandy.Sin@continental-corporation.com
 * \par Responsible Developer:
 *          - Song Yang
 *          - Phone +65 65800179
 *          - Continental Automotive Singapore
 * \par Responsible Architect:
 *          - Goh Hoe Chun
 *          - Phone +65 67799 586
 *          - Hoe.Chun.Goh@continental-corporation.com
 *
 * \par Project:
 *      DPCA2
 *
 * \par SW-Component:
 *      entTelematicsMain
 *
 * \par SW-Package:
 *      Telematics Main
 *
 * \par SW-Module:
 *      Telematics Main
 *
 * \par SW-Architecture Specification:
 *      DPCA_SW_AD_IMX
 *      003
 *
 * \par SW-Design Specification:
 *      DPCA_your_module_SW_DD
 *      your_doc_number
 *
 * \par SW-Test Case Specification:
 *      DPCA_your_module_SW_TS
 *      your_doc_number
 *
 * \par CM-Info:
 *      - teleStarterThread.h-1:incl:DPCARSgp#1
 *      - uidc1282
 *
 * \note
 *      This is a note.
 *
 * \bug
 *      - there are no known bugs
 *
 * \par Module-History:
 *
 * \verbatim
 * Date                Author                 Reason
 * 20 Dec 2012         Song Yang           Initial Creation
 * The latest entry at the head of the history list.
 * \endverbatim
 *
 * \par Copyright Notice:
 * Copyright (C) 2011 Continental Automotive Singapore Pte Ltd.
 * Alle Rechte vorbehalten. All Rights Reserved.\n
 * The reproduction, transmission or use of this document or its contents is
 * not permitted without express written authority.\n
 * Offenders will be liable for damages. All rights, including rights created
 * by patent grant or registration of a utility model or design, are reserved.
 *
 * \ingroup GEN_TELE_MAIN
 */

#pragma once

#include "StarterThread.h"
#include "Tlm_MostDispatcher_Thread.h"
#include "UsbDiagBLThread.h"

/* class teleStarterThread */
class teleStarterThread : public StarterThread
{
/* Constructors and destructors  */
private:
    teleStarterThread();

public :
    virtual ~teleStarterThread();


/*    Operations    */
public :

    static const teleStarterThread* getInstance();

    virtual void initialize();

    virtual void instantiate();

	virtual void terminate();

	virtual void processReady(Thread* t);

	virtual void systemReady(Thread* t);

    uint8_t GetUsbDiagEnable(void);

    uint8_t GetUsbDiagPort(void);

protected:
/*    Attributes    */

    Thread* mpTlmBLthread;
    Thread* mpTlmAppthread;
    Thread* mpConnMgrBLThread;
	Thread* mpRmtCfgSrvThread;
	Thread* mpPushObjAppThread;
	Tlm_MostDispatcher_Thread* mpTlmMostReceiverThread;
	UsbDiagBLThread* mpUsbDiagBLThread;

private:
    static uint8_t mVBUSOnoff;
    static uint8_t mVBUSPort;
    void readUsbParaFromReg(void);
	uint8_t IsKitlEnable(void);	
};

